/*
 * Clase principal del proyecto
 * 
 * @author HPCIII_Team2013
 */

package cl.ucn.hpc.hpcearch;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;

import cl.ucn.hpc.hpcearch.HPCearch;

public class Main {

	public static void main(String[] args) throws IOException {
		
		IOpciones opciones = new Comandos();
		HPCearch w = new HPCearch();
		w.start();
		
		System.out.println(Main.printMenu());
		final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		for (String line = br.readLine(); line != null; line = br.readLine()) {

			if (line.equals("5")) {
				System.out.println("Bye :)");
				break;
			}

			if (line.equals("4")) {
				System.out.println(Main.printMenu());
				continue;
			}
			/*
			 * (1) Contar todas las palabras encontradas
			 */
			if (line.equals("1")) {
				Integer todas = opciones.contarTodasLasPalabrasEncontradas();
				System.out.println(todas);
				continue;
			}

			/*
			 * (2) Contar palabras repetidas de cada pagina descargada
			 */
			if (line.equals("2")) {

				Map<String, Map<String, Integer>> paginas = opciones.contarPalabrasRepetidasDeCadaPagina();

				for (String i : paginas.keySet()) {
					System.out.println("Pagina : " + i);
					Map<String, Integer> pa = paginas.get(i);
					for (String f : pa.keySet()) {

						Integer cantidad = pa.get(f);
						System.out.println("  Palabra : " + f + " = " + cantidad);
					}
				}

				continue;
			}

			/*
			 * (3) Contar palabras repetidas de todas las paginas descargadas
			 */
			if (line.equals("3")) {
				Map<String, Integer> paginas = opciones.contarPalabrasRepetidasDeTodasLasPaginas();
				for (String f : paginas.keySet()) {

					Integer cantidad = paginas.get(f);
					System.out.println("  Palabra : " + f + " = " + cantidad);
				}
				continue;
			}
		}
	}

	public static String printMenu() {

		StringBuilder sb = new StringBuilder();

		sb.append("========= IOpciones ===========").append("\n");
		sb.append("(1) Contar todas las palabras encontradas ").append("\n");
		sb.append("(2) Contar palabras repetidas de cada  pagina descargada ").append("\n");
		sb.append("(3) Contar palabras repetidas de todas las paginas descargadas ").append("\n");
		sb.append("(4) Imprimir Menu ").append("\n");
		sb.append("(5) Salir ").append("\n");
		sb.append("========= EOL ===========").append("\n");

		return sb.toString();
	}
}
